home *** CD-ROM | disk | FTP | other *** search
/ HamCall (April 1991) / HAMCALL CD-ROM (Buckmaster)(April 1991).BIN / prgming / ctutor / charclas.c < prev    next >
Text File  |  1990-10-14  |  2KB  |  66 lines

  1.                                          /* Chapter 13 - Program 2 */
  2. #include "stdio.h"
  3. #include "ctype.h"       /* Note - your compiler may not need this */
  4.  
  5. main()
  6. {
  7. FILE *fp;
  8. char line[80], filename[24];
  9. char *c;
  10.  
  11.    printf("Enter filename -> ");
  12.    scanf("%s",filename);
  13.    fp = fopen(filename,"r");
  14.  
  15.    do {
  16.       c = fgets(line,80,fp);   /* get a line of text */
  17.       if (c != NULL) {
  18.          count_the_data(line);
  19.       }
  20.    } while (c != NULL);
  21.  
  22.    fclose(fp);
  23. }
  24.  
  25. count_the_data(line)
  26. char line[];
  27. {
  28. int whites, chars, digits;
  29. int index;
  30.  
  31.    whites = chars = digits = 0;
  32.  
  33.    for (index = 0;line[index] != 0;index++) {
  34.       if (isalpha(line[index]))   /* 1 if line[] is alphabetic  */
  35.           chars++;
  36.       if (isdigit(line[index]))   /* 1 if line[] is a digit     */
  37.           digits++;
  38.       if (isspace(line[index]))   /* 1 if line[] is blank, tab, */
  39.           whites++;               /*           or newline       */
  40.    }   /* end of counting loop */
  41.  
  42.    printf("%3d%3d%3d %s",whites,chars,digits,line);
  43. }
  44.  
  45.  
  46.  
  47. /* Result of execution (This is a portion of the output, but the
  48.           comments have been removed to allow this section to be
  49.           included as one large comment.  This output assumes that
  50.           CHARCLAS.C is selected as the input file.)
  51.  
  52.   1  0  0
  53.  10 22  2    for (index = 0;line[index] != 0;index++) {
  54.  18 36  1       if (isalpha(line[index]))
  55.  11  5  0           chars++;
  56.  22 32  1       if (isdigit(line[index]))
  57.  11  6  0           digits++;
  58.  18 34  1       if (isspace(line[index]))
  59.  45 15  0           whites++;
  60.  12 17  0    }
  61.   1  0  0
  62.   5 31  3    printf("%3d%3d%3d %s",whites,chars,digits,line);
  63.   1  0  0 }
  64.  
  65. */
  66.